<?php
/**
 * 公共基础模型
 * */
namespace app\common\model;
use think\Model;
use think\cache;

class CommonModel extends Model
{
    protected $pageSize = 20;

    /**
     * Get获取
     * */
    public function comGet($where){
        $res = $this->get($where);
        return $res?$res->toArray():'';

    }
    /**
     * Save新增、修改
     * */
    public function comSave($data,$id=null){
        $res = $this->allowField(true)->save($data,$id);
        return $res;
    }

    /**
     * Save新增，修改 ，批量
     * */
    public function comSaveAll($data){
        $res = $this->allowField(true)->saveAll($data);
        return $res;
    }

    /**
     * Select 查询
     * */
    public function comSelect($where='',$order='id asc',$field=''){

        $res = $this->where($where)->order($order)->field($field)->select();
        return $this->toArr($res);
    }

    /**
     * 删除
     * */
    public function comDel($id){
        return $this->delete($id);
    }
    /**
     * 删除 根据主键删除
     * @param str|array 字符串或者数组ID  还可以是 User::destroy(['status' => 0]);
     * @return int 返回删除个数 大于0（删除成功），0（失败）
     * */
    public function comDestroy($id){
        return $this->destroy($id);
    }
    /**
     * 统计
     * */
    public function comCount($where=''){
        return $this->where($where)->count();
    }

    /**
     * 数据集转对象
     * */
    public function toArr($arr){
        return  $arr?collection($arr)->toArray():'';
    }

    /**
     * 分页
     * @param int $pagesize 分页
     * @param array $where 查询条件
     * @param array $config 配置参数
     *                      page:当前页,
     *                      path:url路径,
     *                      query:url额外参数,
     *                      fragment:url锚点,
     *                      var_page:分页变量,
     *                      list_rows:每页数量
     *                      type:分页类名
     * @param string  $order 排序规则
     * */
    public function comPage($pagesize=null,$where=null,$config=[],$order='id asc'){
        // 分页数值为空，则默认分页数
        if(is_null($pagesize)){
            //$pagesize = config('paginate.list_rows');
            $pagesize = $this->pageSize;
        }

        $list = $this
            ->where($where)
            ->order($order)
            ->paginate($pagesize,false,$config);
        $page = $list->render();

        // 数组转化
        $list =$list->toArray();

        $result['list'] = $list;
        $result['page'] = $page;
        return $result;
    }




}